// 进行axios二次封装:使用请求与响应拦截器
// 引入axios和axios的类型定义

import axios from "axios"
import { ElMessage } from "element-plus"
import { useApiStore } from '@/stores'

const baseURL = 'http://api.nong.com/v1'
const apiKey = 'b5ec42460bb14c12ce13227051ddb357'
const accessToken = 'HPQt7aAWwR2UmjGmdY1tTut0zpjyCJx1'

//第一步:利用axios对象的create方法,去创建axios实例(其他的配置:基础路径、超时的时间)
const request = axios.create({
    //基础路径
    //baseURL: import.meta.env.VITE_APP_BASE_API, //基础路径上会携带/api
    baseURL:baseURL,
    timeout: 5000, //超时的时间的设置
});


//第二步:request实例添加请求与响应拦截器
request.interceptors.request.use(
(config) => {
    //config配置对象,headers属性请求头,经常给服务器端携带公共参数
    //返回配置对象
    
    config.headers['access-token'] = accessToken;
    config.headers['api-key'] = apiKey
    // const apiStore = useApiStore();

    // if(useApiStore.access_token){
    //     config.headers['access-token'] = '';
    // }

    // if(useApiStore.api-key){
    //     config.headers['api-key'] = apiKey
    // }
    console.log(config)
    return config;
},
(error) => {
    // 处理请求错误
    console.error(error);
    return Promise.reject(error);
}
);

//第三步:响应拦截器
request.interceptors.response.use(
(response) => {
    //成功回调
    if(response.data.code === 1){
        return response;
    }

    return Promise.reject(response.data);
},
(error) => {
    //定义一个变量:存储网络错误信息
    console.log(error.response);
    // let message = "";
    // //http状态码
    // const status = error.response.status;
    // switch (status) {
    //   case 401:
    //     message = "TOKEN过期";
    //     break;
    //   case 403:
    //     message = "无权访问";
    //     break;
    //   case 404:
    //     message = "请求地址错误";
    //     break;
    //   case 500:
    //     message = "服务器出现问题";
    //     break;
    //   default:
    //     message = "网络出现问题";
    //     break;
    // }
    // if(message != '' && status != 200){
    //     ElMessage.error(message);
    // }
    // //提示错误信息
    // ElMessage.error(error.response.data.message || '服务请求异常');

    // return Promise.reject(error);
}
);

//对外暴露
export default request;
export {baseURL} ;
